/*
 * Ext JS Library 1.1.1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

Ext = {};
window["undefined"] = window["undefined"];
Ext.apply = function(C, D, B)
{
  if (B)
  {
    Ext.apply(C, B)
  }
  if (C && D && typeof D == "object")
  {
    for (var A in D)
    {
      C[A] = D[A]
    }
  }
  return C
};
(function()
{
  var idSeed = 0;
  var ua = navigator.userAgent.toLowerCase();
  var isStrict = document.compatMode == "CSS1Compat",isOpera = ua.indexOf("opera") > -1,isSafari = (/webkit|khtml/).test(ua),isIE = ua.indexOf("msie") > -1,isIE7 = ua.indexOf("msie 7") > -1,isGecko = !isSafari && ua.indexOf("gecko") > -1,isBorderBox = isIE && !isStrict,isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1),isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1),isLinux = (ua.indexOf("linux") != -1),isSecure = window.location.href.toLowerCase().indexOf("https") === 0;
  if (isIE && !isIE7)
  {
    try
    {
      document.execCommand("BackgroundImageCache", false, true)
    } catch(e)
    {
    }
  }
  Ext.apply(Ext, {isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/" + "/extjs.com/s.gif",emptyFn:function()
  {
  },applyIf:function(o, c)
  {
    if (o && c)
    {
      for (var p in c)
      {
        if (typeof o[p] == "undefined")
        {
          o[p] = c[p]
        }
      }
    }
    return o
  },addBehaviors:function(o)
  {
    if (!Ext.isReady)
    {
      Ext.onReady(function()
      {
        Ext.addBehaviors(o)
      });
      return
    }
    var cache = {};
    for (var b in o)
    {
      var parts = b.split("@");
      if (parts[1])
      {
        var s = parts[0];
        if (!cache[s])
        {
          cache[s] = Ext.select(s)
        }
        cache[s].on(parts[1], o[b])
      }
    }
    cache = null
  },id:function(el, prefix)
  {
    prefix = prefix || "ext-gen";
    el = Ext.getDom(el);
    var id = prefix + (++idSeed);
    return el ? (el.id ? el.id : (el.id = id)) : id
  },extend:function()
  {
    var io = function(o)
    {
      for (var m in o)
      {
        this[m] = o[m]
      }
    };
    return function(sb, sp, overrides)
    {
      if (typeof sp == "object")
      {
        overrides = sp;
        sp = sb;
        sb = function()
        {
          sp.apply(this, arguments)
        }
      }
      var F = function()
      {
      },sbp,spp = sp.prototype;
      F.prototype = spp;
      sbp = sb.prototype = new F();
      sbp.constructor = sb;
      sb.superclass = spp;
      if (spp.constructor == Object.prototype.constructor)
      {
        spp.constructor = sp
      }
      sb.override = function(o)
      {
        Ext.override(sb, o)
      };
      sbp.override = io;
      Ext.override(sb, overrides);
      return sb
    }
  }(),override:function(origclass, overrides)
  {
    if (overrides)
    {
      var p = origclass.prototype;
      for (var method in overrides)
      {
        p[method] = overrides[method]
      }
    }
  },namespace:function()
  {
    var a = arguments,o = null,i,j,d,rt;
    for (i = 0; i < a.length; ++i)
    {
      d = a[i].split(".");
      rt = d[0];
      eval("if (typeof " + rt + " == \"undefined\"){" + rt + " = {};} o = " + rt + ";");
      for (j = 1; j < d.length; ++j)
      {
        o[d[j]] = o[d[j]] || {};
        o = o[d[j]]
      }
    }
  },urlEncode:function(o)
  {
    if (!o)
    {
      return""
    }
    var buf = [];
    for (var key in o)
    {
      var ov = o[key],k = encodeURIComponent(key);
      var type = typeof ov;
      if (type == "undefined")
      {
        buf.push(k, "=&")
      } else
      {
        if (type != "function" && type != "object")
        {
          buf.push(k, "=", encodeURIComponent(ov), "&")
        } else
        {
          if (ov instanceof Array)
          {
            if (ov.length)
            {
              for (var i = 0,len = ov.length; i < len; i++)
              {
                buf.push(k, "=", encodeURIComponent(ov[i] === undefined ? "" : ov[i]), "&")
              }
            } else
            {
              buf.push(k, "=&")
            }
          }
        }
      }
    }
    buf.pop();
    return buf.join("")
  },urlDecode:function(string, overwrite)
  {
    if (!string || !string.length)
    {
      return{}
    }
    var obj = {};
    var pairs = string.split("&");
    var pair,name,value;
    for (var i = 0,len = pairs.length; i < len; i++)
    {
      pair = pairs[i].split("=");
      name = decodeURIComponent(pair[0]);
      value = decodeURIComponent(pair[1]);
      if (overwrite !== true)
      {
        if (typeof obj[name] == "undefined")
        {
          obj[name] = value
        } else
        {
          if (typeof obj[name] == "string")
          {
            obj[name] = [obj[name]];
            obj[name].push(value)
          } else
          {
            obj[name].push(value)
          }
        }
      } else
      {
        obj[name] = value
      }
    }
    return obj
  },each:function(array, fn, scope)
  {
    if (typeof array.length == "undefined" || typeof array == "string")
    {
      array = [array]
    }
    for (var i = 0,len = array.length; i < len; i++)
    {
      if (fn.call(scope || array[i], array[i], i, array) === false)
      {
        return i
      }
    }
  },combine:function()
  {
    var as = arguments,l = as.length,r = [];
    for (var i = 0; i < l; i++)
    {
      var a = as[i];
      if (a instanceof Array)
      {
        r = r.concat(a)
      } else
      {
        if (a.length !== undefined && !a.substr)
        {
          r = r.concat(Array.prototype.slice.call(a, 0))
        } else
        {
          r.push(a)
        }
      }
    }
    return r
  },escapeRe:function(s)
  {
    return s.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1")
  },callback:function(cb, scope, args, delay)
  {
    if (typeof cb == "function")
    {
      if (delay)
      {
        cb.defer(delay, scope, args || [])
      } else
      {
        cb.apply(scope, args || [])
      }
    }
  },getDom:function(el)
  {
    if (!el)
    {
      return null
    }
    return el.dom ? el.dom : (typeof el == "string" ? document.getElementById(el) : el)
  },getCmp:function(id)
  {
    return Ext.ComponentMgr.get(id)
  },num:function(v, defaultValue)
  {
    if (typeof v != "number")
    {
      return defaultValue
    }
    return v
  },destroy:function()
  {
    for (var i = 0,a = arguments,len = a.length; i < len; i++)
    {
      var as = a[i];
      if (as)
      {
        if (as.dom)
        {
          as.removeAllListeners();
          as.remove();
          continue
        }
        if (typeof as.purgeListeners == "function")
        {
          as.purgeListeners()
        }
        if (typeof as.destroy == "function")
        {
          as.destroy()
        }
      }
    }
  },type:function(o)
  {
    if (o === undefined || o === null)
    {
      return false
    }
    if (o.htmlElement)
    {
      return"element"
    }
    var t = typeof o;
    if (t == "object" && o.nodeName)
    {
      switch (o.nodeType)
          {case 1:return"element";case 3:return(/\S/).test(o.nodeValue) ? "textnode" : "whitespace"}
    }
    if (t == "object" || t == "function")
    {
      switch (o.constructor)
          {case Array:return"array";case RegExp:return"regexp"}
      if (typeof o.length == "number" && typeof o.item == "function")
      {
        return"nodelist"
      }
    }
    return t
  },isEmpty:function(v, allowBlank)
  {
    return v === null || v === undefined || (!allowBlank ? v === "" : false)
  },isOpera:isOpera,isSafari:isSafari,isIE:isIE,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isWindows:isWindows,isLinux:isLinux,isMac:isMac,useShims:((isIE && !isIE7) || (isGecko && isMac))})
})();
Ext.namespace("Ext", "Ext.util", "Ext.grid", "Ext.dd", "Ext.tree", "Ext.data", "Ext.form", "Ext.menu", "Ext.state", "Ext.lib", "Ext.layout", "Ext.app", "Ext.ux");
Ext.apply(Function.prototype, {createCallback:function()
{
  var A = arguments;
  var B = this;
  return function()
  {
    return B.apply(window, A)
  }
},createDelegate:function(C, B, A)
{
  var D = this;
  return function()
  {
    var F = B || arguments;
    if (A === true)
    {
      F = Array.prototype.slice.call(arguments, 0);
      F = F.concat(B)
    } else
    {
      if (typeof A == "number")
      {
        F = Array.prototype.slice.call(arguments, 0);
        var E = [A,0].concat(B);
        Array.prototype.splice.apply(F, E)
      }
    }
    return D.apply(C || window, F)
  }
},defer:function(C, E, B, A)
{
  var D = this.createDelegate(E, B, A);
  if (C)
  {
    return setTimeout(D, C)
  }
  D();
  return 0
},createSequence:function(B, A)
{
  if (typeof B != "function")
  {
    return this
  }
  var C = this;
  return function()
  {
    var D = C.apply(this || window, arguments);
    B.apply(A || this || window, arguments);
    return D
  }
},createInterceptor:function(B, A)
{
  if (typeof B != "function")
  {
    return this
  }
  var C = this;
  return function()
  {
    B.target = this;
    B.method = C;
    if (B.apply(A || this || window, arguments) === false)
    {
      return
    }
    return C.apply(this || window, arguments)
  }
}});
Ext.applyIf(String, {escape:function(A)
{
  return A.replace(/('|\\)/g, "\\$1")
},leftPad:function(D, B, C)
{
  var A = new String(D);
  if (C === null || C === undefined || C === "")
  {
    C = " "
  }
  while (A.length < B)
  {
    A = C + A
  }
  return A
},format:function(B)
{
  var A = Array.prototype.slice.call(arguments, 1);
  return B.replace(/\{(\d+)\}/g, function(C, D)
  {
    return A[D]
  })
}});
String.prototype.toggle = function(B, A)
{
  return this == B ? A : B
};
Ext.applyIf(Number.prototype, {constrain:function(B, A)
{
  return Math.min(Math.max(this, B), A)
}});
Ext.applyIf(Array.prototype, {indexOf:function(C)
{
  for (var B = 0,A = this.length; B < A; B++)
  {
    if (this[B] == C)
    {
      return B
    }
  }
  return -1
},remove:function(B)
{
  var A = this.indexOf(B);
  if (A != -1)
  {
    this.splice(A, 1)
  }
}});
Date.prototype.getElapsed = function(A)
{
  return Math.abs((A || new Date()).getTime() - this.getTime())
};
(function()
{
  var B;
  Ext.lib.Dom = {getViewWidth:function(E)
  {
    return E ? this.getDocumentWidth() : this.getViewportWidth()
  },getViewHeight:function(E)
  {
    return E ? this.getDocumentHeight() : this.getViewportHeight()
  },getDocumentHeight:function()
  {
    var E = (document.compatMode != "CSS1Compat") ? document.body.scrollHeight : document.documentElement.scrollHeight;
    return Math.max(E, this.getViewportHeight())
  },getDocumentWidth:function()
  {
    var E = (document.compatMode != "CSS1Compat") ? document.body.scrollWidth : document.documentElement.scrollWidth;
    return Math.max(E, this.getViewportWidth())
  },getViewportHeight:function()
  {
    var E = self.innerHeight;
    var F = document.compatMode;
    if ((F || Ext.isIE) && !Ext.isOpera)
    {
      E = (F == "CSS1Compat") ? document.documentElement.clientHeight : document.body.clientHeight
    }
    return E
  },getViewportWidth:function()
  {
    var E = self.innerWidth;
    var F = document.compatMode;
    if (F || Ext.isIE)
    {
      E = (F == "CSS1Compat") ? document.documentElement.clientWidth : document.body.clientWidth
    }
    return E
  },isAncestor:function(F, G)
  {
    F = Ext.getDom(F);
    G = Ext.getDom(G);
    if (!F || !G)
    {
      return false
    }
    if (F.contains && !Ext.isSafari)
    {
      return F.contains(G)
    } else
    {
      if (F.compareDocumentPosition)
      {
        return !!(F.compareDocumentPosition(G) & 16)
      } else
      {
        var E = G.parentNode;
        while (E)
        {
          if (E == F)
          {
            return true
          } else
          {
            if (!E.tagName || E.tagName.toUpperCase() == "HTML")
            {
              return false
            }
          }
          E = E.parentNode
        }
        return false
      }
    }
  },getRegion:function(E)
  {
    return Ext.lib.Region.getRegion(E)
  },getY:function(E)
  {
    return this.getXY(E)[1]
  },getX:function(E)
  {
    return this.getXY(E)[0]
  },getXY:function(G)
  {
    var F,K,M,N,J = document.body;
    G = Ext.getDom(G);
    if (G.getBoundingClientRect)
    {
      M = G.getBoundingClientRect();
      N = C(document).getScroll();
      return[M.left + N.left,M.top + N.top]
    }
    var O = 0,L = 0;
    F = G;
    var E = C(G).getStyle("position") == "absolute";
    while (F)
    {
      O += F.offsetLeft;
      L += F.offsetTop;
      if (!E && C(F).getStyle("position") == "absolute")
      {
        E = true
      }
      if (Ext.isGecko)
      {
        K = C(F);
        var P = parseInt(K.getStyle("borderTopWidth"), 10) || 0;
        var H = parseInt(K.getStyle("borderLeftWidth"), 10) || 0;
        O += H;
        L += P;
        if (F != G && K.getStyle("overflow") != "visible")
        {
          O += H;
          L += P
        }
      }
      F = F.offsetParent
    }
    if (Ext.isSafari && E)
    {
      O -= J.offsetLeft;
      L -= J.offsetTop
    }
    if (Ext.isGecko && !E)
    {
      var I = C(J);
      O += parseInt(I.getStyle("borderLeftWidth"), 10) || 0;
      L += parseInt(I.getStyle("borderTopWidth"), 10) || 0
    }
    F = G.parentNode;
    while (F && F != J)
    {
      if (!Ext.isOpera || (F.tagName != "TR" && C(F).getStyle("display") != "inline"))
      {
        O -= F.scrollLeft;
        L -= F.scrollTop
      }
      F = F.parentNode
    }
    return[O,L]
  },setXY:function(E, F)
  {
    E = Ext.fly(E, "_setXY");
    E.position();
    var G = E.translatePoints(F);
    if (F[0] !== false)
    {
      E.dom.style.left = G.left + "px"
    }
    if (F[1] !== false)
    {
      E.dom.style.top = G.top + "px"
    }
  },setX:function(F, E)
  {
    this.setXY(F, [E,false])
  },setY:function(E, F)
  {
    this.setXY(E, [false,F])
  }};
  Ext.lib.Event = function()
  {
    var F = false;
    var G = [];
    var K = [];
    var I = 0;
    var H = [];
    var E = 0;
    var J = null;
    return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function()
    {
      if (!this._interval)
      {
        var L = this;
        var M = function()
        {
          L._tryPreloadAttach()
        };
        this._interval = setInterval(M, this.POLL_INTERVAL)
      }
    },onAvailable:function(N, L, O, M)
    {
      H.push({id:N,fn:L,obj:O,override:M,checkReady:false});
      I = this.POLL_RETRYS;
      this.startInterval()
    },addListener:function(Q, M, P)
    {
      Q = Ext.getDom(Q);
      if (!Q || !P)
      {
        return false
      }
      if ("unload" == M)
      {
        K[K.length] = [Q,M,P];
        return true
      }
      var O = function(R)
      {
        return P(Ext.lib.Event.getEvent(R))
      };
      var L = [Q,M,P,O];
      var N = G.length;
      G[N] = L;
      this.doAdd(Q, M, O, false);
      return true
    },removeListener:function(S, O, R)
    {
      var Q,N;
      S = Ext.getDom(S);
      if (!R)
      {
        return this.purgeElement(S, false, O)
      }
      if ("unload" == O)
      {
        for (Q = 0,N = K.length; Q < N; Q++)
        {
          var M = K[Q];
          if (M && M[0] == S && M[1] == O && M[2] == R)
          {
            K.splice(Q, 1);
            return true
          }
        }
        return false
      }
      var L = null;
      var P = arguments[3];
      if ("undefined" == typeof P)
      {
        P = this._getCacheIndex(S, O, R)
      }
      if (P >= 0)
      {
        L = G[P]
      }
      if (!S || !L)
      {
        return false
      }
      this.doRemove(S, O, L[this.WFN], false);
      delete G[P][this.WFN];
      delete G[P][this.FN];
      G.splice(P, 1);
      return true
    },getTarget:function(N, M)
    {
      N = N.browserEvent || N;
      var L = N.target || N.srcElement;
      return this.resolveTextNode(L)
    },resolveTextNode:function(L)
    {
      if (Ext.isSafari && L && 3 == L.nodeType)
      {
        return L.parentNode
      } else
      {
        return L
      }
    },getPageX:function(M)
    {
      M = M.browserEvent || M;
      var L = M.pageX;
      if (!L && 0 !== L)
      {
        L = M.clientX || 0;
        if (Ext.isIE)
        {
          L += this.getScroll()[1]
        }
      }
      return L
    },getPageY:function(L)
    {
      L = L.browserEvent || L;
      var M = L.pageY;
      if (!M && 0 !== M)
      {
        M = L.clientY || 0;
        if (Ext.isIE)
        {
          M += this.getScroll()[0]
        }
      }
      return M
    },getXY:function(L)
    {
      L = L.browserEvent || L;
      return[this.getPageX(L),this.getPageY(L)]
    },getRelatedTarget:function(M)
    {
      M = M.browserEvent || M;
      var L = M.relatedTarget;
      if (!L)
      {
        if (M.type == "mouseout")
        {
          L = M.toElement
        } else
        {
          if (M.type == "mouseover")
          {
            L = M.fromElement
          }
        }
      }
      return this.resolveTextNode(L)
    },getTime:function(N)
    {
      N = N.browserEvent || N;
      if (!N.time)
      {
        var M = new Date().getTime();
        try
        {
          N.time = M
        } catch(L)
        {
          this.lastError = L;
          return M
        }
      }
      return N.time
    },stopEvent:function(L)
    {
      this.stopPropagation(L);
      this.preventDefault(L)
    },stopPropagation:function(L)
    {
      L = L.browserEvent || L;
      if (L.stopPropagation)
      {
        L.stopPropagation()
      } else
      {
        L.cancelBubble = true
      }
    },preventDefault:function(L)
    {
      L = L.browserEvent || L;
      if (L.preventDefault)
      {
        L.preventDefault()
      } else
      {
        L.returnValue = false
      }
    },getEvent:function(M)
    {
      var L = M || window.event;
      if (!L)
      {
        var N = this.getEvent.caller;
        while (N)
        {
          L = N.arguments[0];
          if (L && Event == L.constructor)
          {
            break
          }
          N = N.caller
        }
      }
      return L
    },getCharCode:function(L)
    {
      L = L.browserEvent || L;
      return L.charCode || L.keyCode || 0
    },_getCacheIndex:function(Q, N, P)
    {
      for (var O = 0,M = G.length; O < M; ++O)
      {
        var L = G[O];
        if (L && L[this.FN] == P && L[this.EL] == Q && L[this.TYPE] == N)
        {
          return O
        }
      }
      return -1
    },elCache:{},getEl:function(L)
    {
      return document.getElementById(L)
    },clearCache:function()
    {
    },_load:function(M)
    {
      F = true;
      var L = Ext.lib.Event;
      if (Ext.isIE)
      {
        L.doRemove(window, "load", L._load)
      }
    },_tryPreloadAttach:function()
    {
      if (this.locked)
      {
        return false
      }
      this.locked = true;
      var R = !F;
      if (!R)
      {
        R = (I > 0)
      }
      var Q = [];
      for (var M = 0,L = H.length; M < L; ++M)
      {
        var P = H[M];
        if (P)
        {
          var O = this.getEl(P.id);
          if (O)
          {
            if (!P.checkReady || F || O.nextSibling || (document && document.body))
            {
              var N = O;
              if (P.override)
              {
                if (P.override === true)
                {
                  N = P.obj
                } else
                {
                  N = P.override
                }
              }
              P.fn.call(N, P.obj);
              H[M] = null
            }
          } else
          {
            Q.push(P)
          }
        }
      }
      I = (Q.length === 0) ? 0 : I - 1;
      if (R)
      {
        this.startInterval()
      } else
      {
        clearInterval(this._interval);
        this._interval = null
      }
      this.locked = false;
      return true
    },purgeElement:function(P, Q, N)
    {
      var R = this.getListeners(P, N);
      if (R)
      {
        for (var O = 0,L = R.length; O < L; ++O)
        {
          var M = R[O];
          this.removeListener(P, M.type, M.fn)
        }
      }
      if (Q && P && P.childNodes)
      {
        for (O = 0,L = P.childNodes.length; O < L; ++O)
        {
          this.purgeElement(P.childNodes[O], Q, N)
        }
      }
    },getListeners:function(M, R)
    {
      var P = [],L;
      if (!R)
      {
        L = [G,K]
      } else
      {
        if (R == "unload")
        {
          L = [K]
        } else
        {
          L = [G]
        }
      }
      for (var O = 0; O < L.length; ++O)
      {
        var T = L[O];
        if (T && T.length > 0)
        {
          for (var Q = 0,S = T.length; Q < S; ++Q)
          {
            var N = T[Q];
            if (N && N[this.EL] === M && (!R || R === N[this.TYPE]))
            {
              P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})
            }
          }
        }
      }
      return(P.length) ? P : null
    },_unload:function(S)
    {
      var R = Ext.lib.Event,P,O,M,L,N;
      for (P = 0,L = K.length; P < L; ++P)
      {
        M = K[P];
        if (M)
        {
          var Q = window;
          if (M[R.ADJ_SCOPE])
          {
            if (M[R.ADJ_SCOPE] === true)
            {
              Q = M[R.OBJ]
            } else
            {
              Q = M[R.ADJ_SCOPE]
            }
          }
          M[R.FN].call(Q, R.getEvent(S), M[R.OBJ]);
          K[P] = null;
          M = null;
          Q = null
        }
      }
      K = null;
      if (G && G.length > 0)
      {
        O = G.length;
        while (O)
        {
          N = O - 1;
          M = G[N];
          if (M)
          {
            R.removeListener(M[R.EL], M[R.TYPE], M[R.FN], N)
          }
          O = O - 1
        }
        M = null;
        R.clearCache()
      }
      R.doRemove(window, "unload", R._unload)
    },getScroll:function()
    {
      var L = document.documentElement,M = document.body;
      if (L && (L.scrollTop || L.scrollLeft))
      {
        return[L.scrollTop,L.scrollLeft]
      } else
      {
        if (M)
        {
          return[M.scrollTop,M.scrollLeft]
        } else
        {
          return[0,0]
        }
      }
    },doAdd:function()
    {
      if (window.addEventListener)
      {
        return function(O, M, N, L)
        {
          O.addEventListener(M, N, (L))
        }
      } else
      {
        if (window.attachEvent)
        {
          return function(O, M, N, L)
          {
            O.attachEvent("on" + M, N)
          }
        } else
        {
          return function()
          {
          }
        }
      }
    }(),doRemove:function()
    {
      if (window.removeEventListener)
      {
        return function(O, M, N, L)
        {
          O.removeEventListener(M, N, (L))
        }
      } else
      {
        if (window.detachEvent)
        {
          return function(N, L, M)
          {
            N.detachEvent("on" + L, M)
          }
        } else
        {
          return function()
          {
          }
        }
      }
    }()}
  }();
  var D = Ext.lib.Event;
  D.on = D.addListener;
  D.un = D.removeListener;
  if (document && document.body)
  {
    D._load()
  } else
  {
    D.doAdd(window, "load", D._load)
  }
  D.doAdd(window, "unload", D._unload);
  D._tryPreloadAttach();
  Ext.lib.Ajax = {request:function(K, I, E, J, F)
  {
    if (F)
    {
      var G = F.headers;
      if (G)
      {
        for (var H in G)
        {
          if (G.hasOwnProperty(H))
          {
            this.initHeader(H, G[H], false)
          }
        }
      }
      if (F.xmlData)
      {
        this.initHeader("Content-Type", "text/xml", false);
        K = "POST";
        J = F.xmlData
      }
    }
    return this.asyncRequest(K, I, E, J)
  },serializeForm:function(F)
  {
    if (typeof F == "string")
    {
      F = (document.getElementById(F) || document.forms[F])
    }
    var G,E,H,J,K = "",M = false;
    for (var L = 0; L < F.elements.length; L++)
    {
      G = F.elements[L];
      J = F.elements[L].disabled;
      E = F.elements[L].name;
      H = F.elements[L].value;
      if (!J && E)
      {
        switch (G.type)
            {case"select-one":case"select-multiple":for (var I = 0; I < G.options.length; I++)
        {
          if (G.options[I].selected)
          {
            if (Ext.isIE)
            {
              K += encodeURIComponent(E) + "=" + encodeURIComponent(G.options[I].attributes["value"].specified ? G.options[I].value : G.options[I].text) + "&"
            } else
            {
              K += encodeURIComponent(E) + "=" + encodeURIComponent(G.options[I].hasAttribute("value") ? G.options[I].value : G.options[I].text) + "&"
            }
          }
        }break;case"radio":case"checkbox":if (G.checked)
        {
          K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&"
        }break;case"file":case undefined:case"reset":case"button":break;case"submit":if (M == false)
        {
          K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&";
          M = true
        }break;default:K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&";break}
      }
    }
    K = K.substr(0, K.length - 1);
    return K
  },headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(E)
  {
    this.activeX.unshift(E)
  },setDefaultPostHeader:function(E)
  {
    this.useDefaultHeader = E
  },setDefaultXhrHeader:function(E)
  {
    this.useDefaultXhrHeader = E
  },setPollingInterval:function(E)
  {
    if (typeof E == "number" && isFinite(E))
    {
      this.pollInterval = E
    }
  },createXhrObject:function(I)
  {
    var H,E;
    try
    {
      E = new XMLHttpRequest();
      H = {conn:E,tId:I}
    } catch(G)
    {
      for (var F = 0; F < this.activeX.length; ++F)
      {
        try
        {
          E = new ActiveXObject(this.activeX[F]);
          H = {conn:E,tId:I};
          break
        } catch(G)
        {
        }
      }
    } finally
    {
      return H
    }
  },getConnectionObject:function()
  {
    var F;
    var G = this.transactionId;
    try
    {
      F = this.createXhrObject(G);
      if (F)
      {
        this.transactionId++
      }
    } catch(E)
    {
    } finally
    {
      return F
    }
  },asyncRequest:function(I, F, H, E)
  {
    var G = this.getConnectionObject();
    if (!G)
    {
      return null
    } else
    {
      G.conn.open(I, F, true);
      if (this.useDefaultXhrHeader)
      {
        if (!this.defaultHeaders["X-Requested-With"])
        {
          this.initHeader("X-Requested-With", this.defaultXhrHeader, true)
        }
      }
      if (E && this.useDefaultHeader)
      {
        this.initHeader("Content-Type", this.defaultPostHeader)
      }
      if (this.hasDefaultHeaders || this.hasHeaders)
      {
        this.setHeader(G)
      }
      this.handleReadyState(G, H);
      G.conn.send(E || null);
      return G
    }
  },handleReadyState:function(F, G)
  {
    var E = this;
    if (G && G.timeout)
    {
      this.timeout[F.tId] = window.setTimeout(function()
      {
        E.abort(F, G, true)
      }, G.timeout)
    }
    this.poll[F.tId] = window.setInterval(function()
    {
      if (F.conn && F.conn.readyState == 4)
      {
        window.clearInterval(E.poll[F.tId]);
        delete E.poll[F.tId];
        if (G && G.timeout)
        {
          window.clearTimeout(E.timeout[F.tId]);
          delete E.timeout[F.tId]
        }
        E.handleTransactionResponse(F, G)
      }
    }, this.pollInterval)
  },handleTransactionResponse:function(I, J, E)
  {
    if (!J)
    {
      this.releaseObject(I);
      return
    }
    var G,F;
    try
    {
      if (I.conn.status !== undefined && I.conn.status != 0)
      {
        G = I.conn.status
      } else
      {
        G = 13030
      }
    } catch(H)
    {
      G = 13030
    }
    if (G >= 200 && G < 300)
    {
      F = this.createResponseObject(I, J.argument);
      if (J.success)
      {
        if (!J.scope)
        {
          J.success(F)
        } else
        {
          J.success.apply(J.scope, [F])
        }
      }
    } else
    {
      switch (G)
          {case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F = this.createExceptionObject(I.tId, J.argument, (E ? E : false));if (J.failure)
      {
        if (!J.scope)
        {
          J.failure(F)
        } else
        {
          J.failure.apply(J.scope, [F])
        }
      }break;default:F = this.createResponseObject(I, J.argument);if (J.failure)
      {
        if (!J.scope)
        {
          J.failure(F)
        } else
        {
          J.failure.apply(J.scope, [F])
        }
      }}
    }
    this.releaseObject(I);
    F = null
  },createResponseObject:function(E, K)
  {
    var H = {};
    var M = {};
    try
    {
      var G = E.conn.getAllResponseHeaders();
      var J = G.split("\n");
      for (var I = 0; I < J.length; I++)
      {
        var F = J[I].indexOf(":");
        if (F != -1)
        {
          M[J[I].substring(0, F)] = J[I].substring(F + 2)
        }
      }
    } catch(L)
    {
    }
    H.tId = E.tId;
    H.status = E.conn.status;
    H.statusText = E.conn.statusText;
    H.getResponseHeader = M;
    H.getAllResponseHeaders = G;
    H.responseText = E.conn.responseText;
    H.responseXML = E.conn.responseXML;
    if (typeof K !== undefined)
    {
      H.argument = K
    }
    return H
  },createExceptionObject:function(L, H, E)
  {
    var J = 0;
    var K = "communication failure";
    var G = -1;
    var F = "transaction aborted";
    var I = {};
    I.tId = L;
    if (E)
    {
      I.status = G;
      I.statusText = F
    } else
    {
      I.status = J;
      I.statusText = K
    }
    if (H)
    {
      I.argument = H
    }
    return I
  },initHeader:function(E, H, G)
  {
    var F = (G) ? this.defaultHeaders : this.headers;
    if (F[E] === undefined)
    {
      F[E] = H
    } else
    {
      F[E] = H + "," + F[E]
    }
    if (G)
    {
      this.hasDefaultHeaders = true
    } else
    {
      this.hasHeaders = true
    }
  },setHeader:function(E)
  {
    if (this.hasDefaultHeaders)
    {
      for (var F in this.defaultHeaders)
      {
        if (this.defaultHeaders.hasOwnProperty(F))
        {
          E.conn.setRequestHeader(F, this.defaultHeaders[F])
        }
      }
    }
    if (this.hasHeaders)
    {
      for (var F in this.headers)
      {
        if (this.headers.hasOwnProperty(F))
        {
          E.conn.setRequestHeader(F, this.headers[F])
        }
      }
      this.headers = {};
      this.hasHeaders = false
    }
  },resetDefaultHeaders:function()
  {
    delete this.defaultHeaders;
    this.defaultHeaders = {};
    this.hasDefaultHeaders = false
  },abort:function(F, G, E)
  {
    if (this.isCallInProgress(F))
    {
      F.conn.abort();
      window.clearInterval(this.poll[F.tId]);
      delete this.poll[F.tId];
      if (E)
      {
        delete this.timeout[F.tId]
      }
      this.handleTransactionResponse(F, G, true);
      return true
    } else
    {
      return false
    }
  },isCallInProgress:function(E)
  {
    if (E && E.conn)
    {
      return E.conn.readyState != 4 && E.conn.readyState != 0
    } else
    {
      return false
    }
  },releaseObject:function(E)
  {
    E.conn = null;
    E = null
  },activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};
  Ext.lib.Region = function(G, H, E, F)
  {
    this.top = G;
    this[1] = G;
    this.right = H;
    this.bottom = E;
    this.left = F;
    this[0] = F
  };
  Ext.lib.Region.prototype = {contains:function(E)
  {
    return(E.left >= this.left && E.right <= this.right && E.top >= this.top && E.bottom <= this.bottom)
  },getArea:function()
  {
    return((this.bottom - this.top) * (this.right - this.left))
  },intersect:function(I)
  {
    var G = Math.max(this.top, I.top);
    var H = Math.min(this.right, I.right);
    var E = Math.min(this.bottom, I.bottom);
    var F = Math.max(this.left, I.left);
    if (E >= G && H >= F)
    {
      return new Ext.lib.Region(G, H, E, F)
    } else
    {
      return null
    }
  },union:function(I)
  {
    var G = Math.min(this.top, I.top);
    var H = Math.max(this.right, I.right);
    var E = Math.max(this.bottom, I.bottom);
    var F = Math.min(this.left, I.left);
    return new Ext.lib.Region(G, H, E, F)
  },adjust:function(G, F, E, H)
  {
    this.top += G;
    this.left += F;
    this.right += H;
    this.bottom += E;
    return this
  }};
  Ext.lib.Region.getRegion = function(H)
  {
    var J = Ext.lib.Dom.getXY(H);
    var G = J[1];
    var I = J[0] + H.offsetWidth;
    var E = J[1] + H.offsetHeight;
    var F = J[0];
    return new Ext.lib.Region(G, I, E, F)
  };
  Ext.lib.Point = function(E, F)
  {
    if (E instanceof Array)
    {
      F = E[1];
      E = E[0]
    }
    this.x = this.right = this.left = this[0] = E;
    this.y = this.top = this.bottom = this[1] = F
  };
  Ext.lib.Point.prototype = new Ext.lib.Region();
  Ext.lib.Anim = {scroll:function(H, F, I, J, E, G)
  {
    this.run(H, F, I, J, E, G, Ext.lib.Scroll)
  },motion:function(H, F, I, J, E, G)
  {
    this.run(H, F, I, J, E, G, Ext.lib.Motion)
  },color:function(H, F, I, J, E, G)
  {
    this.run(H, F, I, J, E, G, Ext.lib.ColorAnim)
  },run:function(I, F, K, L, E, H, G)
  {
    G = G || Ext.lib.AnimBase;
    if (typeof L == "string")
    {
      L = Ext.lib.Easing[L]
    }
    var J = new G(I, F, K, L);
    J.animateX(function()
    {
      Ext.callback(E, H)
    });
    return J
  }};
  function C(E)
  {
    if (!B)
    {
      B = new Ext.Element.Flyweight()
    }
    B.dom = E;
    return B
  }
  if (Ext.isIE)
  {
    function A()
    {
      var E = Function.prototype;
      delete E.createSequence;
      delete E.defer;
      delete E.createDelegate;
      delete E.createCallback;
      delete E.createInterceptor;
      window.detachEvent("onunload", A)
    }
    window.attachEvent("onunload", A)
  }
  Ext.lib.AnimBase = function(F, E, G, H)
  {
    if (F)
    {
      this.init(F, E, G, H)
    }
  };
  Ext.lib.AnimBase.prototype = {toString:function()
  {
    var E = this.getEl();
    var F = E.id || E.tagName;
    return("Anim " + F)
  },patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(E, G, F)
  {
    return this.method(this.currentFrame, G, F - G, this.totalFrames)
  },setAttribute:function(E, G, F)
  {
    if (this.patterns.noNegatives.test(E))
    {
      G = (G > 0) ? G : 0
    }
    Ext.fly(this.getEl(), "_anim").setStyle(E, G + F)
  },getAttribute:function(E)
  {
    var G = this.getEl();
    var I = C(G).getStyle(E);
    if (I !== "auto" && !this.patterns.offsetUnit.test(I))
    {
      return parseFloat(I)
    }
    var F = this.patterns.offsetAttribute.exec(E) || [];
    var J = !!(F[3]);
    var H = !!(F[2]);
    if (H || (C(G).getStyle("position") == "absolute" && J))
    {
      I = G["offset" + F[0].charAt(0).toUpperCase() + F[0].substr(1)]
    } else
    {
      I = 0
    }
    return I
  },getDefaultUnit:function(E)
  {
    if (this.patterns.defaultUnit.test(E))
    {
      return"px"
    }
    return""
  },animateX:function(G, E)
  {
    var F = function()
    {
      this.onComplete.removeListener(F);
      if (typeof G == "function")
      {
        G.call(E || this, this)
      }
    };
    this.onComplete.addListener(F, this);
    this.animate()
  },setRuntimeAttribute:function(F)
  {
    var K;
    var G;
    var H = this.attributes;
    this.runtimeAttributes[F] = {};
    var J = function(L)
    {
      return(typeof L !== "undefined")
    };
    if (!J(H[F]["to"]) && !J(H[F]["by"]))
    {
      return false
    }
    K = (J(H[F]["from"])) ? H[F]["from"] : this.getAttribute(F);
    if (J(H[F]["to"]))
    {
      G = H[F]["to"]
    } else
    {
      if (J(H[F]["by"]))
      {
        if (K.constructor == Array)
        {
          G = [];
          for (var I = 0,E = K.length; I < E; ++I)
          {
            G[I] = K[I] + H[F]["by"][I]
          }
        } else
        {
          G = K + H[F]["by"]
        }
      }
    }
    this.runtimeAttributes[F].start = K;
    this.runtimeAttributes[F].end = G;
    this.runtimeAttributes[F].unit = (J(H[F].unit)) ? H[F]["unit"] : this.getDefaultUnit(F)
  },init:function(G, L, K, E)
  {
    var F = false;
    var H = null;
    var J = 0;
    G = Ext.getDom(G);
    this.attributes = L || {};
    this.duration = K || 1;
    this.method = E || Ext.lib.Easing.easeNone;
    this.useSeconds = true;
    this.currentFrame = 0;
    this.totalFrames = Ext.lib.AnimMgr.fps;
    this.getEl = function()
    {
      return G
    };
    this.isAnimated = function()
    {
      return F
    };
    this.getStartTime = function()
    {
      return H
    };
    this.runtimeAttributes = {};
    this.animate = function()
    {
      if (this.isAnimated())
      {
        return false
      }
      this.currentFrame = 0;
      this.totalFrames = (this.useSeconds) ? Math.ceil(Ext.lib.AnimMgr.fps * this.duration) : this.duration;
      Ext.lib.AnimMgr.registerElement(this)
    };
    this.stop = function(O)
    {
      if (O)
      {
        this.currentFrame = this.totalFrames;
        this._onTween.fire()
      }
      Ext.lib.AnimMgr.stop(this)
    };
    var N = function()
    {
      this.onStart.fire();
      this.runtimeAttributes = {};
      for (var O in this.attributes)
      {
        this.setRuntimeAttribute(O)
      }
      F = true;
      J = 0;
      H = new Date()
    };
    var M = function()
    {
      var Q = {duration:new Date() - this.getStartTime(),currentFrame:this.currentFrame};
      Q.toString = function()
      {
        return("duration: " + Q.duration + ", currentFrame: " + Q.currentFrame)
      };
      this.onTween.fire(Q);
      var P = this.runtimeAttributes;
      for (var O in P)
      {
        this.setAttribute(O, this.doMethod(O, P[O].start, P[O].end), P[O].unit)
      }
      J += 1
    };
    var I = function()
    {
      var O = (new Date() - H) / 1000;
      var P = {duration:O,frames:J,fps:J / O};
      P.toString = function()
      {
        return("duration: " + P.duration + ", frames: " + P.frames + ", fps: " + P.fps)
      };
      F = false;
      J = 0;
      this.onComplete.fire(P)
    };
    this._onStart = new Ext.util.Event(this);
    this.onStart = new Ext.util.Event(this);
    this.onTween = new Ext.util.Event(this);
    this._onTween = new Ext.util.Event(this);
    this.onComplete = new Ext.util.Event(this);
    this._onComplete = new Ext.util.Event(this);
    this._onStart.addListener(N);
    this._onTween.addListener(M);
    this._onComplete.addListener(I)
  }};
  Ext.lib.AnimMgr = new function()
  {
    var G = null;
    var F = [];
    var E = 0;
    this.fps = 1000;
    this.delay = 1;
    this.registerElement = function(J)
    {
      F[F.length] = J;
      E += 1;
      J._onStart.fire();
      this.start()
    };
    this.unRegister = function(K, J)
    {
      K._onComplete.fire();
      J = J || I(K);
      if (J != -1)
      {
        F.splice(J, 1)
      }
      E -= 1;
      if (E <= 0)
      {
        this.stop()
      }
    };
    this.start = function()
    {
      if (G === null)
      {
        G = setInterval(this.run, this.delay)
      }
    };
    this.stop = function(L)
    {
      if (!L)
      {
        clearInterval(G);
        for (var K = 0,J = F.length; K < J; ++K)
        {
          if (F[0].isAnimated())
          {
            this.unRegister(F[0], 0)
          }
        }
        F = [];
        G = null;
        E = 0
      } else
      {
        this.unRegister(L)
      }
    };
    this.run = function()
    {
      for (var L = 0,J = F.length; L < J; ++L)
      {
        var K = F[L];
        if (!K || !K.isAnimated())
        {
          continue
        }
        if (K.currentFrame < K.totalFrames || K.totalFrames === null)
        {
          K.currentFrame += 1;
          if (K.useSeconds)
          {
            H(K)
          }
          K._onTween.fire()
        } else
        {
          Ext.lib.AnimMgr.stop(K, L)
        }
      }
    };
    var I = function(L)
    {
      for (var K = 0,J = F.length; K < J; ++K)
      {
        if (F[K] == L)
        {
          return K
        }
      }
      return -1
    };
    var H = function(K)
    {
      var N = K.totalFrames;
      var M = K.currentFrame;
      var L = (K.currentFrame * K.duration * 1000 / K.totalFrames);
      var J = (new Date() - K.getStartTime());
      var O = 0;
      if (J < K.duration * 1000)
      {
        O = Math.round((J / L - 1) * K.currentFrame)
      } else
      {
        O = N - (M + 1)
      }
      if (O > 0 && isFinite(O))
      {
        if (K.currentFrame + O >= N)
        {
          O = N - (M + 1)
        }
        K.currentFrame += O
      }
    }
  };
  Ext.lib.Bezier = new function()
  {
    this.getPosition = function(I, H)
    {
      var J = I.length;
      var G = [];
      for (var F = 0; F < J; ++F)
      {
        G[F] = [I[F][0],I[F][1]]
      }
      for (var E = 1; E < J; ++E)
      {
        for (F = 0; F < J - E; ++F)
        {
          G[F][0] = (1 - H) * G[F][0] + H * G[parseInt(F + 1, 10)][0];
          G[F][1] = (1 - H) * G[F][1] + H * G[parseInt(F + 1, 10)][1]
        }
      }
      return[G[0][0],G[0][1]]
    }
  };
  (function()
  {
    Ext.lib.ColorAnim = function(I, H, J, K)
    {
      Ext.lib.ColorAnim.superclass.constructor.call(this, I, H, J, K)
    };
    Ext.extend(Ext.lib.ColorAnim, Ext.lib.AnimBase);
    var F = Ext.lib;
    var G = F.ColorAnim.superclass;
    var E = F.ColorAnim.prototype;
    E.toString = function()
    {
      var H = this.getEl();
      var I = H.id || H.tagName;
      return("ColorAnim " + I)
    };
    E.patterns.color = /color$/i;
    E.patterns.rgb = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;
    E.patterns.hex = /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
    E.patterns.hex3 = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;
    E.patterns.transparent = /^transparent|rgba\(0, 0, 0, 0\)$/;
    E.parseColor = function(H)
    {
      if (H.length == 3)
      {
        return H
      }
      var I = this.patterns.hex.exec(H);
      if (I && I.length == 4)
      {
        return[parseInt(I[1], 16),parseInt(I[2], 16),parseInt(I[3], 16)]
      }
      I = this.patterns.rgb.exec(H);
      if (I && I.length == 4)
      {
        return[parseInt(I[1], 10),parseInt(I[2], 10),parseInt(I[3], 10)]
      }
      I = this.patterns.hex3.exec(H);
      if (I && I.length == 4)
      {
        return[parseInt(I[1] + I[1], 16),parseInt(I[2] + I[2], 16),parseInt(I[3] + I[3], 16)]
      }
      return null
    };
    E.getAttribute = function(H)
    {
      var J = this.getEl();
      if (this.patterns.color.test(H))
      {
        var K = C(J).getStyle(H);
        if (this.patterns.transparent.test(K))
        {
          var I = J.parentNode;
          K = C(I).getStyle(H);
          while (I && this.patterns.transparent.test(K))
          {
            I = I.parentNode;
            K = C(I).getStyle(H);
            if (I.tagName.toUpperCase() == "HTML")
            {
              K = "#fff"
            }
          }
        }
      } else
      {
        K = G.getAttribute.call(this, H)
      }
      return K
    };
    E.doMethod = function(I, M, J)
    {
      var L;
      if (this.patterns.color.test(I))
      {
        L = [];
        for (var K = 0,H = M.length; K < H; ++K)
        {
          L[K] = G.doMethod.call(this, I, M[K], J[K])
        }
        L = "rgb(" + Math.floor(L[0]) + "," + Math.floor(L[1]) + "," + Math.floor(L[2]) + ")"
      } else
      {
        L = G.doMethod.call(this, I, M, J)
      }
      return L
    };
    E.setRuntimeAttribute = function(I)
    {
      G.setRuntimeAttribute.call(this, I);
      if (this.patterns.color.test(I))
      {
        var K = this.attributes;
        var M = this.parseColor(this.runtimeAttributes[I].start);
        var J = this.parseColor(this.runtimeAttributes[I].end);
        if (typeof K[I]["to"] === "undefined" && typeof K[I]["by"] !== "undefined")
        {
          J = this.parseColor(K[I].by);
          for (var L = 0,H = M.length; L < H; ++L)
          {
            J[L] = M[L] + J[L]
          }
        }
        this.runtimeAttributes[I].start = M;
        this.runtimeAttributes[I].end = J
      }
    }
  })();
  Ext.lib.Easing = {easeNone:function(F, E, H, G)
  {
    return H * F / G + E
  },easeIn:function(F, E, H, G)
  {
    return H * (F /= G) * F + E
  },easeOut:function(F, E, H, G)
  {
    return -H * (F /= G) * (F - 2) + E
  },easeBoth:function(F, E, H, G)
  {
    if ((F /= G / 2) < 1)
    {
      return H / 2 * F * F + E
    }
    return -H / 2 * ((--F) * (F - 2) - 1) + E
  },easeInStrong:function(F, E, H, G)
  {
    return H * (F /= G) * F * F * F + E
  },easeOutStrong:function(F, E, H, G)
  {
    return -H * ((F = F / G - 1) * F * F * F - 1) + E
  },easeBothStrong:function(F, E, H, G)
  {
    if ((F /= G / 2) < 1)
    {
      return H / 2 * F * F * F * F + E
    }
    return -H / 2 * ((F -= 2) * F * F * F - 2) + E
  },elasticIn:function(G, E, K, J, F, I)
  {
    if (G == 0)
    {
      return E
    }
    if ((G /= J) == 1)
    {
      return E + K
    }
    if (!I)
    {
      I = J * 0.3
    }
    if (!F || F < Math.abs(K))
    {
      F = K;
      var H = I / 4
    } else
    {
      var H = I / (2 * Math.PI) * Math.asin(K / F)
    }
    return -(F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I)) + E
  },elasticOut:function(G, E, K, J, F, I)
  {
    if (G == 0)
    {
      return E
    }
    if ((G /= J) == 1)
    {
      return E + K
    }
    if (!I)
    {
      I = J * 0.3
    }
    if (!F || F < Math.abs(K))
    {
      F = K;
      var H = I / 4
    } else
    {
      var H = I / (2 * Math.PI) * Math.asin(K / F)
    }
    return F * Math.pow(2, -10 * G) * Math.sin((G * J - H) * (2 * Math.PI) / I) + K + E
  },elasticBoth:function(G, E, K, J, F, I)
  {
    if (G == 0)
    {
      return E
    }
    if ((G /= J / 2) == 2)
    {
      return E + K
    }
    if (!I)
    {
      I = J * (0.3 * 1.5)
    }
    if (!F || F < Math.abs(K))
    {
      F = K;
      var H = I / 4
    } else
    {
      var H = I / (2 * Math.PI) * Math.asin(K / F)
    }
    if (G < 1)
    {
      return -0.5 * (F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I)) + E
    }
    return F * Math.pow(2, -10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I) * 0.5 + K + E
  },backIn:function(F, E, I, H, G)
  {
    if (typeof G == "undefined")
    {
      G = 1.70158
    }
    return I * (F /= H) * F * ((G + 1) * F - G) + E
  },backOut:function(F, E, I, H, G)
  {
    if (typeof G == "undefined")
    {
      G = 1.70158
    }
    return I * ((F = F / H - 1) * F * ((G + 1) * F + G) + 1) + E
  },backBoth:function(F, E, I, H, G)
  {
    if (typeof G == "undefined")
    {
      G = 1.70158
    }
    if ((F /= H / 2) < 1)
    {
      return I / 2 * (F * F * (((G *= (1.525)) + 1) * F - G)) + E
    }
    return I / 2 * ((F -= 2) * F * (((G *= (1.525)) + 1) * F + G) + 2) + E
  },bounceIn:function(F, E, H, G)
  {
    return H - Ext.lib.Easing.bounceOut(G - F, 0, H, G) + E
  },bounceOut:function(F, E, H, G)
  {
    if ((F /= G) < (1 / 2.75))
    {
      return H * (7.5625 * F * F) + E
    } else
    {
      if (F < (2 / 2.75))
      {
        return H * (7.5625 * (F -= (1.5 / 2.75)) * F + 0.75) + E
      } else
      {
        if (F < (2.5 / 2.75))
        {
          return H * (7.5625 * (F -= (2.25 / 2.75)) * F + 0.9375) + E
        }
      }
    }
    return H * (7.5625 * (F -= (2.625 / 2.75)) * F + 0.984375) + E
  },bounceBoth:function(F, E, H, G)
  {
    if (F < G / 2)
    {
      return Ext.lib.Easing.bounceIn(F * 2, 0, H, G) * 0.5 + E
    }
    return Ext.lib.Easing.bounceOut(F * 2 - G, 0, H, G) * 0.5 + H * 0.5 + E
  }};
  (function()
  {
    Ext.lib.Motion = function(K, J, L, M)
    {
      if (K)
      {
        Ext.lib.Motion.superclass.constructor.call(this, K, J, L, M)
      }
    };
    Ext.extend(Ext.lib.Motion, Ext.lib.ColorAnim);
    var H = Ext.lib;
    var I = H.Motion.superclass;
    var F = H.Motion.prototype;
    F.toString = function()
    {
      var J = this.getEl();
      var K = J.id || J.tagName;
      return("Motion " + K)
    };
    F.patterns.points = /^points$/i;
    F.setAttribute = function(J, L, K)
    {
      if (this.patterns.points.test(J))
      {
        K = K || "px";
        I.setAttribute.call(this, "left", L[0], K);
        I.setAttribute.call(this, "top", L[1], K)
      } else
      {
        I.setAttribute.call(this, J, L, K)
      }
    };
    F.getAttribute = function(J)
    {
      if (this.patterns.points.test(J))
      {
        var K = [I.getAttribute.call(this, "left"),I.getAttribute.call(this, "top")]
      } else
      {
        K = I.getAttribute.call(this, J)
      }
      return K
    };
    F.doMethod = function(J, N, K)
    {
      var M = null;
      if (this.patterns.points.test(J))
      {
        var L = this.method(this.currentFrame, 0, 100, this.totalFrames) / 100;
        M = H.Bezier.getPosition(this.runtimeAttributes[J], L)
      } else
      {
        M = I.doMethod.call(this, J, N, K)
      }
      return M
    };
    F.setRuntimeAttribute = function(S)
    {
      if (this.patterns.points.test(S))
      {
        var K = this.getEl();
        var M = this.attributes;
        var J;
        var O = M["points"]["control"] || [];
        var L;
        var P,R;
        if (O.length > 0 && !(O[0] instanceof Array))
        {
          O = [O]
        } else
        {
          var N = [];
          for (P = 0,R = O.length; P < R; ++P)
          {
            N[P] = O[P]
          }
          O = N
        }
        Ext.fly(K).position();
        if (G(M["points"]["from"]))
        {
          Ext.lib.Dom.setXY(K, M["points"]["from"])
        } else
        {
          Ext.lib.Dom.setXY(K, Ext.lib.Dom.getXY(K))
        }
        J = this.getAttribute("points");
        if (G(M["points"]["to"]))
        {
          L = E.call(this, M["points"]["to"], J);
          var Q = Ext.lib.Dom.getXY(this.getEl());
          for (P = 0,R = O.length; P < R; ++P)
          {
            O[P] = E.call(this, O[P], J)
          }
        } else
        {
          if (G(M["points"]["by"]))
          {
            L = [J[0] + M["points"]["by"][0],J[1] + M["points"]["by"][1]];
            for (P = 0,R = O.length; P < R; ++P)
            {
              O[P] = [J[0] + O[P][0],J[1] + O[P][1]]
            }
          }
        }
        this.runtimeAttributes[S] = [J];
        if (O.length > 0)
        {
          this.runtimeAttributes[S] = this.runtimeAttributes[S].concat(O)
        }
        this.runtimeAttributes[S][this.runtimeAttributes[S].length] = L
      } else
      {
        I.setRuntimeAttribute.call(this, S)
      }
    };
    var E = function(J, L)
    {
      var K = Ext.lib.Dom.getXY(this.getEl());
      J = [J[0] - K[0] + L[0],J[1] - K[1] + L[1]];
      return J
    };
    var G = function(J)
    {
      return(typeof J !== "undefined")
    }
  })();
  (function()
  {
    Ext.lib.Scroll = function(I, H, J, K)
    {
      if (I)
      {
        Ext.lib.Scroll.superclass.constructor.call(this, I, H, J, K)
      }
    };
    Ext.extend(Ext.lib.Scroll, Ext.lib.ColorAnim);
    var F = Ext.lib;
    var G = F.Scroll.superclass;
    var E = F.Scroll.prototype;
    E.toString = function()
    {
      var H = this.getEl();
      var I = H.id || H.tagName;
      return("Scroll " + I)
    };
    E.doMethod = function(H, K, I)
    {
      var J = null;
      if (H == "scroll")
      {
        J = [this.method(this.currentFrame, K[0], I[0] - K[0], this.totalFrames),this.method(this.currentFrame, K[1], I[1] - K[1], this.totalFrames)]
      } else
      {
        J = G.doMethod.call(this, H, K, I)
      }
      return J
    };
    E.getAttribute = function(H)
    {
      var J = null;
      var I = this.getEl();
      if (H == "scroll")
      {
        J = [I.scrollLeft,I.scrollTop]
      } else
      {
        J = G.getAttribute.call(this, H)
      }
      return J
    };
    E.setAttribute = function(H, K, J)
    {
      var I = this.getEl();
      if (H == "scroll")
      {
        I.scrollLeft = K[0];
        I.scrollTop = K[1]
      } else
      {
        G.setAttribute.call(this, H, K, J)
      }
    }
  })()
})();
